﻿#ifndef UIBREADWIDGET_H
#define UIBREADWIDGET_H

#include <QStandardItemModel>
#include <QWidget>

namespace Ui
{
    class UiBreadWidget;
}

/// @brief 面包屑导航控件
///     用于在用户界面中显示和管理路径导航.
class UiBreadWidget: public QWidget
{
    Q_OBJECT
private:
    Ui::UiBreadWidget* ui;
    QString m_rootName; // 存储根目录的名称
    QStandardItemModel* m_model =
            new QStandardItemModel(); // 数据模型: 存储路径各级的名称(面包屑)

public:
    explicit UiBreadWidget(QWidget* parent = nullptr);
    ~UiBreadWidget();

    void setPath(const QString& path);
    void setPath(const QStringList& names);
    void clear();
    bool isEmpty() const;
    bool isRoot() const;
    QString currentPath() const;
    QString rootName() const;

signals:
    void refresh(const QString& path);
    void pathChanged(const QString& newPath);

private:
    void addNameButton(const QString& name);
    void onItemClicked(const QModelIndex& index);
    QStandardItem* currentItem() const;
    QString getPath(QStandardItem* item = nullptr) const;
};

#endif // UIBREADWIDGET_H
